package com.dc.refactoring._2_在对象之间搬移特性._7_IntroduceForeignMethod;

import com.google.common.base.Strings;
import lombok.extern.slf4j.Slf4j;

import java.util.Date;

/**
 * Description: 引入外加函数
 * @author: gdc
 * @date: 2020/11/15
 * @version 1.0
 */
@Slf4j
public class Main {
    public static void main(String[] args) {
        Date date = new Date();

        Date nextDay1 = new Date(date.getTime() + 86400000);

        Date nextDay2 = nextDay(date);
        log.info("{}", date);
        log.info("{}", nextDay1);
        log.info("{}", nextDay2);

        log.info("{}", isBlank(null));
        log.info("{}", isBlank(""));
        log.info("{}", isBlank(" "));
        log.info("{}", isBlank("1"));
    }

    /**
     * 假设需要一个函数获取下一天的时间，然而对应的类无法提供该服务，且不支持添加额外方法；
     * 此时就需要我们在当前类中，添加对应的实现函数，满足当前的需求
     */
    public static Date nextDay(Date date) {
        return new Date(date.getTime() + 86400000);
    }

    /**
     * 判断 字符串是否为 Null 字符串或者空格字符串
     * 当前方法是为了补充原方法中缺失的情况
     */
    public static boolean isBlank(String str) {
        return Strings.isNullOrEmpty(str) || Strings.isNullOrEmpty(str.trim());
    }
}
